package br.com.senac.academicnet.model.entidades;

import java.io.Serializable;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Column;
//import javax.persistence.Transient;

@Entity
@Table(name = "cursos")
public class CursoVO implements Serializable{
    
    
    /**
	 * 
	 */
	private static final long serialVersionUID = -1253994792523393811L;

	@Id
    @GeneratedValue
    private int codigo;
    
    @Column(nullable = false)
    private String nome;
    
    @Column(nullable = false)
    private int cargaHoraria;
  
    @OneToMany(mappedBy = "curso", targetEntity = TurmaVO.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    private List<TurmaVO> turmas;
  
    
    public List<TurmaVO> getTurmas() {
		return turmas;
	}

	public void setTurmas(List<TurmaVO> turmas) {
		this.turmas = turmas;
	}

	public int getCargaHoraria() {
		return cargaHoraria;
	}

	public void setCargaHoraria(int cargaHoraria) throws Exception {
		if(cargaHoraria > 0){
			this.cargaHoraria = cargaHoraria;
		}else{
			throw new Exception("Carga horaria deve ser informada.");
		}
	}

	/**
     * @return the codigo
     */
    public int getCodigo() {
        return codigo;
    }

    /**
     * @param codigo the codigo to set
     */
    public void setCodigo(int codigo) {
        this.codigo = codigo;
    }

    /**
     * @return the nome
     */
    public String getNome() {
        return nome;
    }

    /**
     * @param nome the nome to set
     */
    public void setNome(String nome) throws Exception {
        if(nome.length() > 0){
            this.nome = nome;
        }else{
            throw new Exception("Nome deve ser informado.");
        }
    }
    
    @Override
    public String toString(){
        return getCodigo() + ";" + getNome() + ";" + getCargaHoraria() + ";";
    }
    
}
